﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ElectronicCommerce.Framework.Payment.Contract.DataContract.Common;

namespace ElectronicCommerce.Framework.Payment.Contract.DataContract.History
{
    public class ChargeHistory
    {
        public ChargeHistory()
        {
            this.TransactionNumber = 0;
            this.CustomerID = "";
            this.SOID = "";
            this.SOAmount = 0M;
            this.CurrencyCode = CurrencyCode.CNY;
            this.OutSOID = "";
            this.PaymentMethodCode = "";
            this.PaymnetMethodName = "";
            this.ChargeStatus = PaymentStatus.InProcess;
            this.RequestText = "";
            this.RequestDate = DateTime.Now;
            this.ResponseMode = null;
            this.ResponseDate = DateTime.Now;
            this.ResultType = null;
            this.ResultMessage = "";
        }

        /// <summary>
        /// 流水号
        /// </summary>
        public int TransactionNumber { get; set; }

        /// <summary>
        /// 客户号
        /// </summary>
        public string CustomerID { get; set; }

        /// <summary>
        /// 订单号
        /// </summary>
        public string SOID { get; set; }

        /// <summary>
        /// 订单金额
        /// </summary>
        public decimal SOAmount { get; set; }

        /// <summary>
        /// 币种
        /// </summary>
        public CurrencyCode CurrencyCode { get; set; }

        /// <summary>
        /// 支付网关流单号
        /// </summary>
        public string OutSOID { get; set; }

        /// <summary>
        /// 支付方式 
        /// </summary>
        public string PaymentMethodCode { get; set; }

        /// <summary>
        /// 支付名称
        /// </summary>
        public string PaymnetMethodName { get; set; }

        /// <summary>
        /// 支付状态
        /// </summary>
        public PaymentStatus ChargeStatus { get; set; }

        /// <summary>
        /// 请求文本
        /// </summary>
        public string RequestText { get; set; }

        /// <summary>
        /// 请求日期
        /// </summary>
        public DateTime RequestDate { get; set; }

        /// <summary>
        /// 响应方式
        /// </summary>
        public ResponseMode? ResponseMode { get; set; }

        /// <summary>
        /// 响应文本
        /// </summary>
        public string ResponseText { get; set; }

        /// <summary>
        /// 响应日期
        /// </summary>
        public DateTime ResponseDate { get; set; }

        /// <summary>
        /// 结果类型
        /// </summary>
        public ChargeCallbackResultType? ResultType { get; set; }

        /// <summary>
        /// 结果信息
        /// </summary>
        public string ResultMessage { get; set; }
    }
}
